package com.hucsmn.five;

/**
 * 棋盘位置解析。
 */
public class Parser {
    public final int line;
    public final int col;

    /**
     * 解析输入的十六进制行列值。
     *
     * @param input 输入字符串。
     * @throws IllegalArgumentException 解析错误时抛出非法参数异常。
     */
    Parser(String input) throws IllegalArgumentException {
        String[] fields = input.trim().split("[\\s,;]+", 2);
        if (fields.length != 2) {
            throw new IllegalArgumentException("输入请用空格隔开");
        }
        try {
            int line = Integer.valueOf(fields[0], 16);
            int col = Integer.valueOf(fields[1], 16);
            if (line < 0 || col < 0) {
                throw new IllegalArgumentException("行列不能为负值");
            }
            this.line = line;
            this.col = col;
        } catch (NumberFormatException ex) {
            throw new IllegalArgumentException("行列必须是十六进制数字");
        }
    }
}
